import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import '@/icons' // icon
import '@/permission' // permission control

import globalConstant from '@/utils/constant'

import { importList } from "@/utils/importCom";
import { constantRoutes } from '@/router'
// 一些常量
Vue.prototype.CNST = globalConstant

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online! ! !
 */
// import { mockXHR } from '../mock'
// if (process.env.NODE_ENV === 'production') {
//   mockXHR()
// }

// set ElementUI lang to EN
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui，按如下方式声明
Vue.use(ElementUI)

Vue.config.productionTip = false

// 用户手动刷新页面，这是路由会被重设，要重新新增
function addCom(target) {
  target.forEach((obj) => {
    if (Array.isArray(obj.children)) {
      obj.component = importList.get(obj.permission)
      addCom(obj.children)
    } else {
      obj.component = importList.get(obj.permission)
    }
  })
}
if (localStorage.getItem('user_pm')) {
  if (localStorage.getItem('router_pm')) {
    let routes = JSON.parse(localStorage.getItem('router_pm'))
    routes = routes.filter(item => item.permission)
    addCom(routes)
    routes = routes.concat(constantRoutes)
    router.options.routes = routes;
    router.addRoutes(routes)
  }
}

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
